package main

import (
	"flag"
	"log"
	"os"
	"os/signal"
	"syscall"

	"github.com/babytap/server/internal/server"
)

func main() {
	// 命令行参数
	port := flag.Int("port", 8553, "服务器端口")
	dataDir := flag.String("data-dir", "./data", "数据目录")
	flag.Parse()

	// 创建 HTTPS 服务器
	httpsServer, err := server.NewHTTPSServer(*port, *dataDir)
	if err != nil {
		log.Fatalf("创建 HTTPS 服务器失败: %v", err)
	}

	// 启动服务器（在 goroutine 中）
	go func() {
		if err := httpsServer.Start(); err != nil {
			log.Fatalf("启动 HTTPS 服务器失败: %v", err)
		}
	}()

	// 等待中断信号
	sigChan := make(chan os.Signal, 1)
	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
	<-sigChan

	// 优雅关闭
	log.Println("收到关闭信号，正在优雅关闭...")
	if err := httpsServer.Stop(); err != nil {
		log.Printf("关闭服务器失败: %v", err)
	}

	log.Println("服务器已关闭")
}
